package com.ghyf.mplay.bean;

import java.io.File;
import java.util.ArrayList;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.view.View;
import android.view.ViewGroup.LayoutParams;

import com.ghyf.mplay.datatype.BackParam;
import com.ghyf.mplay.datatype.GradientColorType;
import com.ghyf.mplay.datatype.POS;
import com.ghyf.mplay.datatype.RGBA;
import com.ghyf.mplay.view.MPicShow;

/**
 * 显示图片模块的信息包装类
 * @author 陈小红
 *
 */
public class PicShowInfo extends BaseModuleInfo {
	MPicShow mPicShow=null;
	@Override
	public MPicShow getView(Context context) {
		mContext=context;
		 mPicShow = new MPicShow(context);
		//设置控件基本属性
		mPicShow.setModule_type(module_type);
		mPicShow.setzOrder(zOrder);
		mPicShow.setFile_version(file_version);
		mPicShow.setModule_name(module_name);
		mPicShow.setModule_uid(module_uid);
		mPicShow.setModule_gid(module_gid);
		mPicShow.setmPicShow(mPicShow);
		mPicShow.setShow_interval(show_interval);
		mPicShow.setPic_list(pic_list);

		// 位置
		initPosition(mPicShow, pos);

		// 背景
		initBackground(mPicShow, backgroud);

		return mPicShow;
	}

	// <File_Version>1</File_Version>
	// <Module_Name>PicShow1</Module_Name >
	// <Module_UID>4</Module_UID>
	// <Module_GID>0</Module_GID>
	// <Module_Pos>(300,50,420,250)</Module_Pos>
	// <Backgroud Type="3" PureColor="(0,0,0,255)" GradientColor1="(0,0,0,255)"
	// GradientColor2="(0,0,0,255)" BKFile="" GradientColorType="0"/>
	// <Show_Interval>10</Show_Interval>
	// <Pic_List>
	// <Item Pic="show1.jpg" />
	// <Item Pic="show2.tga" />
	// <Item Pic="pic3.png" />
	// <Item Pic="paly.swf" />
	// </Pic_List>

	/**
	 * 初始化控件的背景
	 * 
	 * @param view
	 *            被设置的控件
	 * @param bg
	 *            控件的背景
	 */
	void initBackground(View view, BackParam bg) {
		switch (bg.getType()) {
		case NOTSHOW: // 背景不显示
			break;
		case GRADIENTCOLOR: // 背景类型为渐变色
			if (bg.getColorType() == GradientColorType.HORIZONTALGRADIENT) {
				//水平渐变 参考：url:http://blog.csdn.net/a_large_swan/article/details/7107126
				int startColor = Color.argb(bg.getGradientcolor1().getAlpha(), bg.getGradientcolor1().getRed(), bg.getGradientcolor1().getGreen(),
						bg.getGradientcolor1().getBlue());
				int endColor = Color.argb(bg.getGradientcolor2().getAlpha(), bg.getGradientcolor2().getRed(), bg.getGradientcolor2().getGreen(),
						bg.getGradientcolor2().getBlue());
				GradientDrawable gradientDrawable=new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,new int[]{startColor,endColor});
				view.setBackgroundDrawable(gradientDrawable);
			} else {
				// 垂直渐变
				int startColor = Color.argb(bg.getGradientcolor1().getAlpha(), bg.getGradientcolor1().getRed(), bg.getGradientcolor1().getGreen(),
						bg.getGradientcolor1().getBlue());
				int endColor = Color.argb(bg.getGradientcolor2().getAlpha(), bg.getGradientcolor2().getRed(), bg.getGradientcolor2().getGreen(),
						bg.getGradientcolor2().getBlue());
				GradientDrawable gradientDrawable=new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,new int[]{startColor,endColor});
				view.setBackgroundDrawable(gradientDrawable);
			}
			break;
		case PICTURE: // 背景类型为图片
			// 本地图片文件路径生成drawable
			Bitmap bitmap = BitmapFactory.decodeFile(bg.getBkfile().getPath());
			Drawable drawable = new BitmapDrawable(mContext.getResources(),bitmap);
			// 设置图片背景
			view.setBackgroundDrawable(drawable);
			break;
		case PURECOLOR: // 背景类型为纯色
			RGBA purecolor = bg.getPurecolor();
			view.setBackgroundColor(Color.argb(purecolor.getAlpha(),
					purecolor.getRed(), purecolor.getGreen(),
					purecolor.getBlue()));
			break;
		default: // 其他
			break;
		}
	}
	/**
	 * 设置当前View显示/隐藏
	 * 2014-5-21 下午3:25:01
	 * @param isShow
	 *
	 */
	public void setVisibility(boolean isShow){
		if(isShow){
			mPicShow.setVisibility(View.VISIBLE);
		}else{
			mPicShow.setVisibility(View.GONE);
		}
	}
	/**
	 * 初始化控件的位置
	 * 
	 * @param view
	 *            被设置的控件
	 * @param pos
	 *            控件的位置
	 */
	void initPosition(View view, POS pos) {
		view.setX(pos.getLeft());
		view.setY(pos.getTop());
		view.setLayoutParams(new LayoutParams(pos.getWidth(), pos.getHeight()));
	}
	private Context mContext=null;
	// <Backgroud Type="3" PureColor="(0,0,0,255)" GradientColor1="(0,0,0,255)"
	// GradientColor2="(0,0,0,255)" BKFile="" GradientColorType="0"/>
	private BackParam backgroud;// 模块背景

	// <Show_Interval>10</Show_Interval>
	private int show_interval;// 切换时间

	// <Pic_List>
	// <Item Pic="show1.jpg" />
	// <Item Pic="show2.tga" />
	// <Item Pic="pic3.png" />
	// <Item Pic="paly.swf" />
	// </Pic_List>
	private ArrayList<File> pic_list; // 图片文件列表

	public BackParam getBackgroud() {
		return backgroud;
	}

	public void setBackgroud(BackParam backgroud) {
		this.backgroud = backgroud;
	}

	public int getShow_interval() {
		return show_interval;
	}

	public void setShow_interval(int show_interval) {
		this.show_interval = show_interval;
	}

	public ArrayList<File> getPic_list() {
		return pic_list;
	}

	public void setPic_list(ArrayList<File> pic_list) {
		this.pic_list = pic_list;
	}


}
